package com.tedu.api;

import org.junit.Test;

/**
 * JAVA面向对象----不是真正的面向对象------八大基本数据类型
 * 创建对象--类【属性，构造器，方法】
 * 8个包装类：根据八大基本数据类型提供对应包装类
 * 八大基本数据类型     对应八大基本数据类型对应包装类
 *      int           Integer        继承Number父类【抽象】
 *      long          Long           继承Number父类【抽象】
 *      double         Double         继承Number父类【抽象】
 *      short          Short          继承Number父类【抽象】
 *      float           Float         继承Number父类【抽象】
 *      byte            Byte          继承Number父类【抽象】
 *      char           Charter        继承Object父类
 *      boolean        Boolean        继承Object父类
 */
public class PackingAPI {
    @Test
    public void test(){
        int a=1;//不是面向对象，通过.【反射】
        //创建int类型对象
        Integer i=new Integer(a);
        i.toString();
    }
    /**
     * 包装类API
     * xxxValue方法 ===静态方法valueOf        返回值：对应数据类型
     * 作用：把包装类转换为基本数据类型的方法
     * 测试：6个包装类
     */
    @Test
    public void testxxxValue(){
        Integer i=new Integer(2);//打包：对应类型放入包装类
        i=i.intValue();     //int类型和Integer
        System.out.println(i);
         //测试：其他7个包装类
        //String s1="123.123";   Double
        //String s2="1";        Byte
        //String s3="123.123F";  Float
        //String s4="124L";      Long
        //String s5="true";      Boolean
        //String s6="a";         Charter
    }
    @Test
    public void testxxxValue1(){
        Double  d=new Double(123.123);
        d=d.doubleValue();
        System.out.println(d);
    }
    /**包装类具备静态方法
     * 静态方法valueOf    返回值：对应数据类型
     * 作用：把包装类转换为基本数据类型的方法
     */
    @Test
    public void testValueOf(){
        int i=Integer.valueOf(1);//打包拆包一体化
        boolean b=Boolean.valueOf(true);
        char c=Character.valueOf('1');
        Float.valueOf(1.123F);//1.123默认double   编译工具
    }
    /**
     * 包装类-----------------------Servlet【JavaBean】
     * public class  Person{
     *     Integer   id;//成员----解析
     * }
     * parseXXX（）    静态方法   返回值：对应类型
     * 作用：将获取到的字符串转换为对应类型
     */
    @Test
    public void testParseXXX(){
        String s="123";//将字符串转换为整形
        int i=Integer.parseInt(s);//区别：解析字符串，转换为正确类型
        int is=Integer.valueOf(s);//区别：存入值，打包拆包获取值
        System.out.println(i);
        //整形转换为字符串
        String s1=String.valueOf(123);//与包装类，用法一致，实现不一致
        //自己测：String s2=“456f”；  char   s3=‘a’；
        String s2= "456f";
        float f=Float.parseFloat(s2);
        System.out.println(f);
        char s3='a';
        // Character 没有针对字符的解析
    }
/**
 * 自动拆装箱
 * JDK1.5之前没有自动拆装箱
 * JDK1.5之后没有自动拆装箱   2004
 */
@Test
    public void testJ(){
    //JDK1.5之前没有自动拆装箱
    Integer in=Integer.valueOf(1);//装箱
    int ii=in.intValue();//拆箱
    //JDK1.5之后没有自动拆装箱
    Integer i=1;
    int is=i;
    //编译器帮我们写了拆装箱过程---JVM虚拟机认1.5之前写法
}
}
